package com.zenithmind.version.service;

import com.zenithmind.version.pojo.dto.RepositoryCreateDTO;
import com.zenithmind.version.pojo.vo.RepositoryVO;

/**
 * 仓库管理服务接口 - 遵循接口隔离原则，专门处理仓库的基本管理操作
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
public interface RepositoryManagementService {

    /**
     * 创建仓库
     * 
     * @param createDTO 创建DTO
     * @return 仓库VO
     */
    RepositoryVO createRepository(RepositoryCreateDTO createDTO);

    /**
     * 根据ID查询仓库详情
     * 
     * @param id 仓库ID
     * @return 仓库VO
     */
    RepositoryVO getRepositoryById(String id);

    /**
     * 根据名称和所有者查询仓库
     * 
     * @param name 仓库名称
     * @param ownerId 所有者ID
     * @return 仓库VO
     */
    RepositoryVO getRepositoryByNameAndOwner(String name, String ownerId);

    /**
     * 更新仓库信息
     * 
     * @param id 仓库ID
     * @param updateDTO 更新DTO
     * @return 是否成功
     */
    Boolean updateRepository(String id, RepositoryCreateDTO updateDTO);

    /**
     * 删除仓库
     * 
     * @param id 仓库ID
     * @return 是否成功
     */
    Boolean deleteRepository(String id);

    /**
     * 归档仓库
     * 
     * @param id 仓库ID
     * @return 是否成功
     */
    Boolean archiveRepository(String id);

    /**
     * 取消归档仓库
     * 
     * @param id 仓库ID
     * @return 是否成功
     */
    Boolean unarchiveRepository(String id);

    /**
     * 检查仓库名称是否可用
     * 
     * @param name 仓库名称
     * @param ownerId 所有者ID
     * @return 是否可用
     */
    Boolean checkRepositoryNameAvailable(String name, String ownerId);
}
